package Work;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.StringJoiner;
import java.util.stream.Collectors;

/**
 *  1)、读取txt文件的所有内容并显示（5分）
 *  2）、输出所有性别为男的数据（5分）
 *  3）、对读取的数据按年龄从大到小输出（忽略第一行）（5分）
 *  4)、将第3步排序后的数据输出到文件result.txt文件中（5分）
 */

public class WorkDemo {
    final static String Path="FileWork\\work.txt";
    public static void main(String[] args) {
      List<String> list = getList(Path);

      //1)、读取txt文件的所有内容并显示（5分）
      //test1(list);

      //2）、输出所有性别为男的数据（5分）
      //test2(list);

      //3）、对读取的数据按年龄从大到小输出（忽略第一行）（5分）
      // System.out.println(test3(list));

      //4)、将第3步排序后的数据输出到文件result.txt文件中（5分）
        test4(test3(list));
        System.out.println("输出成功！输出目录：FileWork\\result.txt");

    }

    public static List<String> getList(String Path){
        List<String> list=new ArrayList<>();
        try (
                Reader r = new FileReader(Path);
                BufferedReader bufer=new BufferedReader(r);
        ) {
            String line;
            while ((line=bufer.readLine())!=null){
                list.add(line);
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return list;
    }
    public static void test1(List<String> list){
     //1)、读取txt文件的所有内容并显示（5分）
        //skip 跳过！！！
      list.stream().skip(1).forEach(body -> System.out.println(body));
    }

    public static void test2(List<String> list){
     //2）、输出所有性别为男的数据（5分）
        list.stream().filter(body->body.indexOf(",男,")!=-1)
        .forEach(body-> System.out.println(body));
    }
    public static String test3(List<String> list){
     //3）、对读取的数据按年龄从大到小输出（忽略第一行）（5分）
     String collectStr = list.stream().skip(1).sorted(((o1, o2)
       -> Integer.parseInt(o2.split(",")[3]) - Integer.parseInt(o1.split(",")[3])
     )).map(np->{
         StringJoiner str=new StringJoiner("");
         str.add(np);
         return str.toString();
     }).collect(Collectors.joining(System.lineSeparator()));
     return collectStr;
    }

    public static void test4(String str){
     //4)、将第3步排序后的数据输出到文件result.txt文件中（5分）
        final String Path = "FileWork\\result.txt";
        try (
                Writer writer = new FileWriter(Path);
                BufferedWriter buffOut=new BufferedWriter(writer);
        ) {
            char[] chars=str.toCharArray();
            buffOut.write(chars);
            buffOut.flush();
        }  catch (IOException e) {
            e.printStackTrace();
        }

    }
}
